Problem se sferickym trojuhelnikem
Otázka od: Petr Brant
21. 6. 2004 16:01
Ahoj vespolek,
mam souradnice dvou bodu (zemepisna sirka a delka v radianech). Dale mam
treti bod dany stejnym zpusobem a mam z toho spocitat vzdalenost tohoto
tretiho bodu od spojnice (ortodromy) tech dvou puvodnich bodu. Neco jako
vysku ve sferickem trojuhelniku. Neresil jste to nahodou nekdo, at
nevymyslim vymyslene?
Zdravim vsechny
RNDr. Petr Brant [brant@dcomm.cz]
http://web.redbox.cz/petr.brant
Odpovedá: Miroslav Novosad
22. 6. 2004 0:39
From: "Petr Brant" <brant@dcomm.cz>
> mam souradnice dvou bodu (zemepisna sirka a delka v radianech).
Od kdy jsou zemepisne souradnice v radianech?
> treti bod dany stejnym zpusobem a mam z toho spocitat vzdalenost
tohoto
> tretiho bodu od spojnice (ortodromy) tech dvou puvodnich bodu. Neco
jako
> vysku ve sferickem trojuhelniku. Neresil jste to nahodou nekdo, at
> nevymyslim vymyslene?
Neresil, ale urcite je to uz vymyslene... Asi bys mel jeste upresnit o
jake vzdalenosti a presnost se jedna a tudiz jestli to chces resit na
referencni kouli nebo elipsoidu. Ta koule by mela byt (relativne)
jednoducha, ale pro elipsoid, pokud me pamet nemate (pravda, od statnic
je to uz nejaky patek), obecne reseni nebylo a vypocty se nejak
iterovaly.
Miroslav Novosad
mnprokonf@guick.cz
Odpovedá: Petr Brant
22. 6. 2004 7:00
Naprosto dostacuje koule, jedna se nejvyse o desitky km a nepresnost je
zanedbatelna, nejedna se o nic kritickeho. Stahl jsem si nekolik PDF na toto
tema, nejak bych to z toho dostal, ale jak rikam, nechce se mi vymyslet
vymyslene. Takze pokud nekdo vite a jste ochoten se podelit....
Zdravim vsechny
RNDr. Petr Brant [brant@dcomm.cz]
http://web.redbox.cz/petr.brant <http://web.redbox.cz/petr.brant>
> From: "Petr Brant" <brant@dcomm.cz>
> > mam souradnice dvou bodu (zemepisna sirka a delka v radianech).
>
> Od kdy jsou zemepisne souradnice v radianech?
>
> > treti bod dany stejnym zpusobem a mam z toho spocitat vzdalenost
> tohoto
> > tretiho bodu od spojnice (ortodromy) tech dvou puvodnich bodu. Neco
> jako
> > vysku ve sferickem trojuhelniku. Neresil jste to nahodou nekdo, at
> > nevymyslim vymyslene?
>
> Neresil, ale urcite je to uz vymyslene... Asi bys mel jeste upresnit o
> jake vzdalenosti a presnost se jedna a tudiz jestli to chces resit na
> referencni kouli nebo elipsoidu. Ta koule by mela byt (relativne)
> jednoducha, ale pro elipsoid, pokud me pamet nemate (pravda, od statnic
> je to uz nejaky patek), obecne reseni nebylo a vypocty se nejak
> iterovaly.
Odpovedá: Lukas Barton
22. 6. 2004 9:41
Zde je reseni pro vzdalenost dvou bodu:
(staci do vzorce dosadit koncovy bod a promitnuti paty vysky toho
trojuhelnika (kdyz se na nej podivame v jeho rovine) na kouli).
Pokud se pletu, tak mne opravte.
Sestavte funkci na vypocet vzdalenosti dvou bodu na zemekouli.
Instrukce: Ulohu je treba dekomponovat do tri funkci. Prvni z nich slouzi k
vypoctu vzdalenosti dvou bodu na jednotkove kouli. Pritom je pouzit temer
400 let stary Napieruv vzorec, ktery neni trivialni odvodit. Druha funkce
slouzi k prevodu kladnych i zapornych uhlu z vyjadreni ve stupnich, minutach
a vterinach na necele stupne. Konecne treti funkce zuroci nase snazeni a
vyvolanim predchozich dvou funkci zajisti vysledek. Reseni:
function d=Napier(bod1, bod2)
% Nejkratsi vzdalenost dvou bodu na jednotkove kouli dle Napiera
% d=Napier(bod1, bod2);
% d ... vzdalenost bodu na kouli
% bod1 ... poloha prvniho bodu jako vektor [delka sirka] ve stupnich
% bod2 ... poloha druheho bodu jako vektor [delka sirka] ve stupnich
% prevod na radiany
bod1=bod1*pi/180; bod2=bod2*pi/180;
% vytazeni z vektoru
l1=bod1(1); w1=bod1(2); l2=bod2(1); w2=bod2(2);
% Napier v 17. stoleti
cose=sin(w1)*sin(w2)+cos(w1)*cos(w2)*cos(l1-l2);
d=acos(cose); % zjisteni vzdalenosti na jednotkove kouli
function phi=Uhel(dms)
% Prevod uhlu ze stupnu, minut a vterin na necele stupne
% phi=Uhel(dms);
% phi ... vysledny uhel ve stupnich
% dms ... uhel jako vektor [d m s], kde
% d ... cele uhlove stupne
% m ... cele uhlove minuty
% s ... uhlove vteriny
d=dms(1);m=dms(2);s=dms(3); % vydolovani informaci z vektoru
z=sign(d); % urceni znamenka vysledku
z=z+(z==0)*sign(m); % chybi-li stupne
z=z+(z==0)*sign(s); % chybi-li minuty
d=floor(abs(d)); % proc asi?
m=floor(abs(m)); % jeste jednou
s=abs(s); % konec spinave prace
phi=d+m/60+s/3600; % proc je to az tady?
phi=z*phi; % bonbonek na vrcholu dortu
function [d]=Geoid(delka1,sirka1,delka2,sirka2)
% Nejkratsi vzdalenost dvou mist na zemekouli
% [d]=Geoid(delka1,sirka1,delka2,sirka2);
% d ... vzdalenost v metrech
% delka1 ... zemepisna delka 1. bodu jako vektor
% [stupne minuty vteriny]
% sirka1 ... zemepisna sirka 1. bodu jako vektor
% [stupne minuty vteriny]
% delka2 ... zemepisna delka 2. bodu jako vektor
% [stupne minuty vteriny]
% sirka2 ... zemepisna sirka 2. bodu jako vektor
% [stupne minuty vteriny]
d1=Uhel(delka1);s1=Uhel(sirka1);
prevody
d2=Uhel(delka2);s2=Uhel(sirka2);
d=6386000*Napier([d1 s1],[d2 s2]);
Priklad 3A.4: Od funkce k formuli pro vypocet merneho tepla
dvouatomoveho plynu.
Instrukce: Nastudujte funkci CpIdeal2, spustte ji pro chlorovodik a ruzne
teploty, nakreslete graf Cp pro teplotu od 0 do 500 stupnu Celsia a napiste
matematickou formuli pro Cp jako jeden celek. Dale sestavte funkci, ktera
zjisti, o kolik procent se zvetsi Cp pri zdvojnasobeni teploty. Nasleduje
vypis funkce: Reseni:
function [Cp]=CpIdeal2(ni,t)
% Molarni teplo Cp pro dvouatomovou molekulu
% podle statisticke termodynamiky
% [Cp]=CpIdeal2(ni,t);
% Cp ... molarni teplo pri konstantnim tlaku (J/kmol/K)
% ni ... frekvence vibraci (8.67e13 Hz pro HCl)
R=8314.3; % plynova konstanta (J/kmol/K)
h=0.66262e-33; % Planckova konstanta (J/s)
k=1.3806e-23; % Boltzmanova konstanta (J/K)
T=t+273.15; % absolutni teplota
x=h*ni/k./T; % pomocna promenna
Cp=7/2*R+R*x.^2.*exp(x)./(exp(x)-1).^2;
Odpovedá: Miroslav Novosad
22. 6. 2004 9:59
From: "Petr Brant" <brant@dcomm.cz>
> Naprosto dostacuje koule, jedna se nejvyse o desitky km a nepresnost
je
> zanedbatelna, nejedna se o nic kritickeho.
V tom pripade (max. desitky km) bych se na nejakou "sfericnost" asi
vykaslal a resil bych to v rovine. Z rozdilu uhlu x R (6378 km) mas
delky odvesen, takze pokud prvni bod prohlasis za [0,0] tak tim dostanes
[x1,y1] a [x2,y2] tech dalsich a vzdalenost bodu [x2,y2] od primky
([0,0],[x1,y1]) zvladnes levou zadni, ne?
M. Novosad
Odpovedá: martin.ben@ge.com
22. 6. 2004 10:40
V tomto pripade bych se kouli vubec nezabyval. Kdysi jsem se zabyval vypocty
prvku pro strelbu delostrelectva a vsechno jsme resili v rovine. Pro
vzdalenosti do 30 km, kterymi jsme se tehdy zabyvali, byla presnost vice nez
dostacujici. Jeden kolega resil podobne vypocty pro strelbu taktickymi raketami
na vzdalenosti do 300 km a stacila mu taky rovina. Aby taky ne pri presnosti
tech raket
Martin Ben
-----Original Message-----
From: delphi-l-owner@clexpert.cz [mailto:delphi-l-owner@clexpert.cz]On Behalf
Of Petr Brant
Naprosto dostacuje koule, jedna se nejvyse o desitky km a nepresnost je
zanedbatelna, nejedna se o nic kritickeho. Stahl jsem si nekolik PDF na toto
tema, nejak bych to z toho dostal, ale jak rikam, nechce se mi vymyslet
vymyslene. Takze pokud nekdo vite a jste ochoten se podelit....